import numpy as np

class PreErrorChecker:

    @staticmethod
    def check_array(X):
        """检查输入数据类型和形状"""
        if not isinstance(X, (np.ndarray, np.generic)):
            raise TypeError(f"期望输入为 numpy 数组，但得到的是 {type(X)} 类型。")
        if X.ndim != 2:
            raise ValueError("输入数据应为二维数组。")

    @staticmethod
    def check_missing_values(X):
        """检查数据是否有缺失值"""
        if np.any(np.isnan(X)):
            raise ValueError(
                "输入数据包含缺失值。请处理缺失值。")

    @staticmethod
    def check_constant_columns(X):
        """检查是否有常数列"""
        var = np.var(X, axis=0)
        if np.any(var == 0):
            raise ValueError("存在一个或多个方差为零的列。请考虑移除。")


